//
//  Readme.swift
//  SainMicroblog
//
//  Created by chenxinju on 16/5/3.
//  Copyright © 2016年 chenxinju-a2. All rights reserved.
//

import Foundation

//项目主体框架

/*

  定义一个TabBarcontroller控制器
  创建子视图控制器 继承自Base类的控制器 这样便于设置和统一
    
  //出现问题 四个TabBar中间的+号按钮不属于控制器 需要另外添加
   解决方案:在TabBar中 的layoutSaz布局子控件中定义一个索引来 移动其他四个控制器的items 计算添加在中间 并使用闭包添加按钮的点击方法
  

 1.添加好子视图控制器后 添加进去
 2.在定义一个自定义的UIview视图 来显示访客模式 定义bool值类判断是否登录过的显示视图

 3. 自定义tabBar  来加载中间的的发布按钮 model出来的显示视图
    1> 注意:系统的TaBar无法直接赋值 是rand ovly属性的 
    2>使用KVC 方式来实现 ---运行时机制 不仅能给只读属性赋值 还可以给私有属性赋值

 3.1 在实现欢迎视图的动画处理的约束 (并不是frame ) 需要调起 layoutIfNeet 
   效果是在视图控制器加载完成的方法中实现动画 ---viewDidAppear(animated: Bool)方法中

 4.单例对象 设计模式
   代理/通知/闭包 的区别
   代理/和闭包是 一对一的
   通知 一对多 一对一 多对一

 5.在设置相同子控件时 使用便利构造函数 来实现相同设置的值 便利构造函数需要借助其他函数来初始化

 6.网络定义一个单例类 封装两个请求方法 在外界供调用

 

 7.微博配图的大小计算
  实现思路:用collectionView来实现
  1.根据配图的数量来计算 大小--先计算一张图片的尺寸
  2.让所有的微博都显示一张配图的尺寸 (配图大小开始先不考虑 固定尺寸)
  3.collrctionView类需要有一个数据源类  来判断图片的数量

 8.上拉加载和下拉刷新 ---数据实现

   微博会返回since_id 和max_id 来判断是否显示的微博为最新
      1.在viewModel定义判断是否图片 设置一个临时数组 拼接在原来的数组中
      2.在cell中滑动到indexPath中去加载数据
   下拉刷新
   1.下拉刷新模仿系统的来写 定义一个继承自UIRefreshControl 采用自定义视图,添加到tableView中
   2.给tableView添加KVO监听 监听contenofset值的改变
   3.分析几种状态
     1> [拖拽ScollView]正常状态
     2> [拖拽ScollView]释放更新状态
     3> [达到释放更新状态的时候 松开手]加载

  9.cell添加相册图片时 会有占用系统cpu内存过高问题
     1.使用图形绘制 通过一个class来方法直接来返回绘制过的图片
     2.经过绘制的图片 会有图片质量不清晰的问题 二者取舍 根据需求来定义

  //集成点击图片浏览器效果
SDPhotoBrowser
A image browser which is easy for using. 非常简单易用的图片浏览器，模仿微博图片浏览器动感效果，综合了图片展示和存储等多项功能。

创建SDPhotoBrowser实例

SDPhotoBrowser *browser = [[SDPhotoBrowser alloc] init];

browser.sourceImagesContainerView = 原图的父控件;

browser.imageCount = 原图的数量;

browser.currentImageIndex = 当前需要展示图片的index;

browser.delegate = 代理;

[browser show]; // 展示图片浏览器

2.实现代理方法

// 返回临时占位图片（即原来的小图）

(UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { ； }
// 返回高质量图片的url

(NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { ； }


























*/